package org.example.mallweb.mallservice.service;

import org.example.mallcommon.dto.ItemListDto;
import org.example.mallcommon.result.ReturnResult;
import org.example.mallcommon.vio.OrderItemsVio;

import java.util.List;

/**
 * @author 韩先楚
 * 订单服务接口
 */
public interface OrderService {
    /**
     * 创建订单
     */
    ReturnResult<OrderItemsVio> createOrder(ItemListDto itemListDto);

    /**
     * 取消订单
     */
    ReturnResult<String> cancelOrder(Integer orderId);

    /**
     * 支付
     * @param orderId
     * @return
     */
    ReturnResult<String> pay(Integer orderId);

    /**
     * 收货确认
     */
    ReturnResult<String> confirmOrder(Integer orderId);

    /**
     *获取全部订单信息
     */
    ReturnResult<List<OrderItemsVio>> getAllOrder(Integer userId);

    /**
     *  待收货订单
     */
    ReturnResult<List<OrderItemsVio>> getWaitReceiveOrder(Integer userId);

    /**
     * 待支付订单
     */
    ReturnResult<List<OrderItemsVio>> getWaitPayOrder(Integer userId);

    /**
     * 已完成订单
     */
    ReturnResult<List<OrderItemsVio>> getFinishOrder(Integer userId);

    /**
     * 已取消订单
     */
    ReturnResult<List<OrderItemsVio>> getCancelOrder(Integer userId);

    /**
     * 查询待发货订单
     */
    ReturnResult<List<OrderItemsVio>> getWaitSendOrder(Integer userId);

    /**
     * 删除订单
     */
    ReturnResult<String> deleteOrder(Integer orderId);
}
